home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 21
/
Cream of the Crop 21 (Terry Blount) (October 1996).iso
/
program
/
nbasic_2.zip
/
DEMOGAME.BAS
Wrap
BASIC Source File
|
1996-06-30
|
10KB
|
396 lines
DECLARE SUB NewScreen (UD, RL, k2, m1, s1, s2, k1)
DECLARE SUB DemoCheck (UD, RL, XX, YY, k1, k2, s1, s2, m1)
DECLARE SUB Battle ()
DECLARE SUB MainBattle ()
DECLARE SUB Center (Col, T$)
DECLARE SUB Border ()
COMMON SHARED RL, UD, Level, Hp, MaxHp, Str, Df, W, SH, ARM, HLM, XX, YY
SHELL "cd\ideas"
CLEAR
DIM colr1(50)
DIM char$(50)
CLS
SCREEN 12
FOR i = 1 TO 5
READ a, b$
colr1(i) = a
char$(i) = b$
DATA 4,"H",1,"o",14,"j",2,"u",5,"!"
NEXT i
FOR i = 1 TO 5
PALETTE colr1(i), 0
NEXT i
'SHELL "d:\gary\audio\stop -q"
'SHELL "d:\gary\audio\daplay d:\gary\audio\j3.wav -q -r"
FOR i = 0 TO 63
PALETTE 4, 65536 * 0 + 256 * 0 + i
PALETTE 1, 65536 * i + 256 * 0 + 0
PALETTE 14, 65536 * 0 + 256 * i + i
PALETTE 2, 65536 * 0 + 256 * i + 0
PALETTE 5, 65536 * i + 256 * 0 + i
FOR x = 37 TO 41
COLOR colr1(x - 36): LOCATE 15, x: PRINT char$(x - 36)
NEXT x, i
FOR i = 1 TO 1000: NEXT i
FOR i = 63 TO 0 STEP -1
PALETTE 4, 65536 * 0 + 256 * 0 + i
PALETTE 1, 65536 * i + 256 * 0 + 0
PALETTE 14, 65536 * 0 + 256 * i + i
PALETTE 2, 65536 * 0 + 256 * i + 0
PALETTE 5, 65536 * i + 256 * 0 + i
NEXT i
FOR i = 1 TO 2000: NEXT i
TitleScreen:
PX = 0
CLS
PALETTE 15, 0
Center 14, "Baron's Quest"
Center 15, "New Game"
Center 16, "Load Game"
FOR i = 0 TO 63
PALETTE 15, 65536 * i + 256 * i + i
NEXT i
l = 15
COLOR 15
Line0:
DO
LOCATE l, 35
PRINT CHR$(26)
DO
x$ = INKEY$: LOOP UNTIL x$ <> ""
IF x$ = CHR$(13) THEN EXIT DO
IF x$ = CHR$(0) + "P" AND l = 15 THEN l = 16: LOCATE 15, 35: PRINT " "
IF x$ = CHR$(0) + "H" AND l = 16 THEN l = 15: LOCATE 16, 35: PRINT " "
LOOP
IF l = 15 THEN GOTO NewGame
IF l = 16 THEN GOTO LoadGame
NewGame:
Level = 1
Str = 10
Df = 5
Hp = 25
MaxHp = 25
RL = 0
UD = 0
XX = 15
YY = 39
W = 1
SH = 1
ARM = 1
HLM = 0
GOTO Episode1
EP = 0
MaxEP = 30
END
LoadGame:
Center 17, CHR$(218) + STRING$(18, 196) + CHR$(191)
FOR i = 18 TO 22 STEP 2
Center i, CHR$(179) + SPACE$(18) + CHR$(179)
NEXT i
FOR i = 19 TO 21 STEP 2
Center i, CHR$(195) + STRING$(18, 196) + CHR$(180)
NEXT i
Center 23, CHR$(192) + STRING$(18, 196) + CHR$(217)
ON ERROR GOTO Empty1
OPEN "save1.gam" FOR INPUT AS #1
Line1:
ON ERROR GOTO Empty2
OPEN "save2.gam" FOR INPUT AS #2
Line2:
ON ERROR GOTO Empty3
OPEN "save3.gam" FOR INPUT AS #3
ReadName:
IF file1 = 0 THEN INPUT #1, Name$(1) ELSE Name$(1) = "- Empty -"
IF file2 = 0 THEN INPUT #2, Name$(2) ELSE Name$(2) = "- Empty -"
IF file3 = 0 THEN INPUT #3, Name$(3) ELSE Name$(3) = "- Empty -"
IF file1 = 0 OR file2 = 1 OR file3 = 1 THEN CLOSE
l = 18
Center 18, Name$(1)
Center 20, Name$(2)
Center 22, Name$(3)
LoadSelect:
LOCATE l, 29: PRINT CHR$(26)
DO: x$ = INKEY$: LOOP UNTIL x$ <> ""
SELECT CASE x$
CASE CHR$(27)
LOCATE 17, 1: PRINT SPACE$(560)
l = 16
GOTO Line0
CASE CHR$(13)
IF l = 18 AND file1 = 1 OR l = 20 AND file2 = 1 OR l = 22 AND file3 = 1 THEN SOUND 37, 2: GOTO LoadSelect
GOTO FileCheck
CASE CHR$(0) + "H"
IF l = 18 THEN GOTO LoadSelect
IF l = 20 OR l = 22 THEN LOCATE l, 29: PRINT " ": l = l - 2
GOTO LoadSelect
CASE CHR$(0) + "P"
IF l = 18 OR l = 20 THEN LOCATE l, 29: PRINT " ": l = l + 2
IF l = 22 THEN GOTO LoadSelect
GOTO LoadSelect
CASE ELSE
GOTO LoadSelect
END SELECT
Empty1:
file1 = 1
RESUME Line1
Empty2:
file2 = 1
RESUME Line2
Empty3:
file3 = 1
RESUME ReadName
FileCheck:
ON ERROR GOTO FileError
IF l = 18 THEN OPEN "save1.gam" FOR INPUT AS #1
IF l = 20 THEN OPEN "save2.gam" FOR INPUT AS #1
IF l = 22 THEN OPEN "save3.gam" FOR INPUT AS #1
INPUT #1, Name$
INPUT #1, Level, Str, Df, Hp, MaxHp, RL, UD
INPUT #1, XX, YY, W, SH, ARM, HLM, EP, MaxEP
IF Level > 99 THEN Level = 1: Hp = 5: MaxHp = 5
IF Hp > 999 THEN Hp = 5: MaxHp = 5
IF MaxHp > 999 THEN MaxHp = 5
IF Str > 99 THEN Str = 1
IF Df > 99 THEN Df = 1
IF W > 5 THEN W = 1
IF SH > 3 THEN SH = 1
IF ARM > 4 THEN ARM = 1
IF HLM > 4 THEN HLM = 0
GOTO Episode1
END
FileError:
CLOSE
'SHELL "d:\gary\audio\stop -q"
SCREEN 0
COLOR 21
Center 15, "Halt! The file you have loaded is damaged or not in " + CHR$(34) + "Baron's Quest" + CHR$(34)
Center 16, "format! The file will be deleted!"
IF l = 18 THEN KILL "save1.gam"
IF l = 20 THEN KILL "save2.gam"
IF l = 22 THEN KILL "save3.gam"
Center 17, "Problem fixed! Press any key to return to system"
Center 18, "P.S. Do not be afraid to restart the game! :)"
x$ = INPUT$(1)
COLOR 15, 0
SYSTEM
Episode1:
CLS
NewScreen UD, RL, k2, m1, s1, s2, k1
Move1:
COLOR 15: LOCATE XX, YY: PRINT CHR$(2)
DO: x$ = INKEY$: LOOP UNTIL x$ <> ""
SELECT CASE x$
CASE " "
DemoCheck UD, RL, XX, YY, k1, k2, s1, s2, m1: GOTO Move1
CASE CHR$(0) + "H"
IF XX - 1 = 0 THEN XX = 23: UD = UD + 1: NewScreen UD, RL, k2, m1, s1, s2, k1: GOTO Move1
IF SCREEN(XX - 1, YY) <> 32 THEN GOTO Move1
LOCATE XX, YY: PRINT " ": XX = XX - 1
CASE CHR$(0) + "P"
IF XX + 1 = 24 THEN XX = 1: UD = UD - 1: NewScreen UD, RL, k2, m1, s1, s2, k1: GOTO Move1
IF SCREEN(XX + 1, YY) <> 32 THEN GOTO Move1
LOCATE XX, YY: PRINT " ": XX = XX + 1
CASE CHR$(0) + "K"
IF YY - 1 = 0 THEN YY = 80: RL = RL - 1: NewScreen UD, RL, k2, m1, s1, s2, k1: GOTO Move1
IF SCREEN(XX, YY - 1) <> 32 THEN GOTO Move1
LOCATE XX, YY: PRINT " ": YY = YY - 1
CASE CHR$(0) + "M"
IF YY + 1 = 81 THEN YY = 1: RL = RL + 1: NewScreen UD, RL, k2, m1, s1, s2, k1: GOTO Move1
IF SCREEN(XX, YY + 1) <> 32 THEN GOTO Move1
LOCATE XX, YY: PRINT " ": YY = YY + 1
END SELECT
GOTO Move1
SUB Battle ()
END SUB
SUB Border ()
LOCATE 1, 1: PRINT STRING$(80, 219)
FOR iii = 2 TO 22
LOCATE iii, 1: PRINT CHR$(219); SPACE$(78); CHR$(219)
NEXT iii
LOCATE 23, 1: PRINT STRING$(80, 219)
END SUB
SUB Center (Col, T$)
COLOR 15
LOCATE Col, 40 - (LEN(T$) / 2)
PRINT T$
END SUB
SUB DemoCheck (UD, RL, XX, YY, k1, k2, s1, s2, m1)
PALETTE 15, 65536 * 63 + 256 * 63 + 63
COLOR 15
IF UD = 0 AND RL = 0 AND XX = 12 AND YY = 39 THEN
LOCATE 24, 1: PRINT "The sign reads: Welcome to the underground!"
x$ = INPUT$(1)
LOCATE 24, 1: PRINT SPACE$(80)
END IF
IF UD = 0 AND RL = -2 AND XX = 3 AND YY = 2 THEN
IF s1 = 0 THEN s1 = 1: cure = cure + 3: LOCATE 24, 1: PRINT "You have found a pack of herbs!": x$ = INPUT$(1): LOCATE 24, 1: PRINT SPACE$(80)
END IF
IF UD = 3 AND RL = -3 AND XX = 7 AND YY = 68 THEN
IF s2 = 0 THEN s2 = 1: cure = cure + 3: LOCATE 24, 1: PRINT "You have found a pack of herbs!": x$ = INPUT$(1): LOCATE 24, 1: PRINT SPACE$(80)
END IF
IF UD = 4 AND RL = -1 AND XX = 3 AND YY = 39 THEN
MainBattle
END IF
IF UD = 4 AND RL = 0 AND XX = 6 AND YY = 39 THEN
IF k2 = 1 THEN k2 = 0: LOCATE 5, 39: PRINT CHR$(24) ELSE k2 = 1: LOCATE 5, 39: PRINT CHR$(25)
END IF
IF UD = 3 AND RL = -4 AND XX = 11 AND YY = 39 THEN
IF k1 = 1 THEN k1 = 0: LOCATE 10, 39: PRINT CHR$(24) ELSE k1 = 1: LOCATE 10, 39: PRINT CHR$(25)
END IF
END SUB
SUB MainBattle ()
END SUB
SUB NewScreen (UD, RL, k2, m1, s1, s2, k1)
CLS
COLOR 14
IF RL = 0 THEN PALETTE 14, 65536 * 63 + 256 * 63 + 63
IF RL = -1 THEN PALETTE 14, 65536 * 50 + 256 * 50 + 50
IF RL = -2 THEN PALETTE 14, 65536 * 20 + 256 * 20 + 20
IF RL = -3 THEN PALETTE 14, 65536 * 5 + 256 * 5 + 5
IF RL = -4 THEN PALETTE 14, 0
IF UD = 0 AND RL = 0 THEN
Border
'SHELL "d:\gary\audio\stop -q"
'SHELL "d:\gary\audio\daplay d:\gary\audio\undergrn.wav -q -r"
LOCATE 1, 39: PRINT " "
LOCATE 12, 1: PRINT " "
LOCATE 11, 39: PRINT CHR$(232)
END IF
IF UD = 0 AND RL = -1 THEN
Border
LOCATE 12, 80: PRINT " "
LOCATE 1, 39: PRINT " "
LOCATE 12, 1: PRINT " "
END IF
IF UD = 1 AND RL = 0 THEN
Border
LOCATE 23, 39: PRINT " "
LOCATE 12, 1: PRINT " "
IF k1 = 1 THEN LOCATE 1, 39: PRINT " " ELSE LOCATE 1, 39: PRINT CHR$(8)
END IF
IF UD = 1 AND RL = -1 THEN
Border
LOCATE 23, 39: PRINT " "
LOCATE 12, 80: PRINT " "
LOCATE 1, 39: PRINT " "
LOCATE 12, 1: PRINT " "
END IF
IF UD = 2 AND RL = 0 THEN
Border
LOCATE 1, 39: PRINT " "
IF k1 = 1 THEN LOCATE 23, 39: PRINT " " ELSE LOCATE 23, 39: PRINT CHR$(8)
END IF
IF UD = 3 AND RL = 0 THEN
Border
LOCATE 1, 39: PRINT " "
LOCATE 23, 39: PRINT " "
END IF
IF UD = 4 AND RL = 0 THEN
Border
LOCATE 23, 39: PRINT " "
IF k2 = 1 THEN LOCATE 5, 39: PRINT CHR$(25) ELSE LOCATE 5, 39: PRINT CHR$(24)